В архитектуре крупных систем на языке С++, определение формального struct для каждого временного группирования данных часто избыточно. Кортеж std::tuple выступает в качестве гетерогенного контейнера, обобщая std::pair для хранения произвольного количества различных типов.
1. Создание и ограничения
В отличие от стандартных контейнеров, конструктор tuple является явным. Вы не можете использовать копирующее инициализирование со списком; вы должны использовать прямое инициализирование или std::make_tuple.
tuple<int, double> t2 = {1, 2.5}; // Ошибка!
2. Доступ и инспекция
Элементы доступны через get<i>(имя_кортежа), где i должно быть постоянным выражением, известным во время компиляции. Метаданные можно получить через tuple_size и tuple_element с использованием decltype.
3. Отношения логики
Кортежи сравниваются лексикографически. Сравнение допустимо только если оба кортежа имеют одинаковое количество элементов и их соответствующие типы поддерживают операторы сравнения.